﻿// Ŭnicode please
#pragma once

#include <memory>

namespace sora
{
	class RenderApp;

	class Engine {
	public:
		//singletone 기반 facade로 쓰인다. jni와 붙는 인터페이스 역할. 
		//필요할 경우 class+namespace global function조합으로 외부에서 접근하면 될듯
		static Engine &engine();
		~Engine();

		void setScreenSize(int width, int height);
		int screenWidth() const;
		int screenHeight() const;

		void draw() const;
		void update(float dt);

		void setApp(RenderApp *app);
		void cleanup();

	private:
		Engine();
		Engine(const Engine &o);
		Engine& operator-(const Engine &o);

		int screenWidth_;
		int screenHeight_;

		std::auto_ptr<RenderApp> app_;
	};

	namespace engine
	{
		void draw();
		void update(float dt);
	}
}